#ifndef __CLIENTSMOTOR_H_
#define __CLIENTSMOTOR_H_


/************硬件类型定义************************/
#define DPM_PIN16_DOUBLE_RS // DPM_PIN16_DOUBLE_RS // DPM_PIN16_SINGLE_RS //

#if defined(DPM_PIN16_SINGLE_RS)
#define CURRENT_SAMPLE_TOPOLOGY 0
#elif defined(DPM_PIN16_DOUBLE_RS)
#define CURRENT_SAMPLE_TOPOLOGY 1
#endif

#define HARDWARE_UDC_SAMPLE_ENABLE 0                  //////////////硬件是否支持母线电压采样/////////////

/************电机参数辨识使能******************/
#define MOTOR_IDENTIFY_ENABLE    0   //0:禁止辨识，需手动输入参数；1：使能辨识，填入辨识结果
//************************控制模式*******************************/
#define CONTROL_MODE         1    //0:速度模式 1：功率模式

// *******************************电机旋转默认方向*************************/
#define DEFAULT_MOTOR_DIRECTION 0 //1：正相序 0:负向序

//************************电机参数*******************************/
#define MOTOR_RS             (2.1)       //Unit:ohm
#define MOTOR_L              (0.004)      //Unit:H
#define MOTOR_POLEPAIRS      (8)            //Unit:none5对极为默认值，必填参数

/*******************估算器部分********************************/
#define SMO_PLL_KP            0.92   //锁相环kp调整
#define SMO_PLL_KI            0.55    //锁相环ki调整
#define SMO_PLL_SATMAX        3200  //最大速度限制
#define SMO_PLL_SATMIN        64     //最小速度限制

/*******************系统参数配置********************************/
#define VOLT_UDC                           (24.0)         //Unit:v
#define MAX_CURRENT_LIMIT                  (2.5)             //Unit:A  限制电流
#define MAX_SPEED_LIMIT                    (1200.0) //Unit:Rpm  最大速度
#define MAX_POWER                          (30.0)  //Unit:w    最大功率
//******************顺逆风启动参数********************************/
#define RUN_ACC_TIME_MS                    (3000.0)           //加速到一档速度的时间ms
#define ON_THE_FLY_DETECT_TIME_MS          (2000.0)            //最小为：MIDDLE_FREQUENCY_TASK_MS，单位ms
#define ON_THE_FLY_DETECT_CUR_RATIO        (0.36)             //百分比：24%额定电流A：顺逆风检测电流
#define ON_THE_FLY_CONFIRM_CNT             (5)               //顺逆风确认次数：MIDDLE_FREQUENCY_TASK_MS的整数倍

#define RUN_VELO_MIN_RATIO                 (0.06)            //百分比：6%最大速度rpm：反向到顺逆风切换速度阈值
#define RUN_IQ_MAX_RATIO                   (0.48)           //百分比：48%额定电流A：低速下电流限制
#define RUN_IQ_MIN_RATIO                   (-0.444)//(-0.20)          //(-0.244) //百分比：24%额定电流A：最大反向电流限制
/*******************************************************************/

//禁止反转/////////
/*使能，则需要初始位置检测，启动可能存在辨识噪声
  禁止，无噪声，启动可能偶尔反转
    1==》禁止反转 0==》允许反转
*/
#define INVERSE_FORBIDDON  0
// ***************************初始位置检测IPD************************************/
#define POSITION_SEEK_TIME 2   //初始位置检测次数
#define RIPD_PULSE_WIDTH 400    //初始位置检测脉冲宽度
#define RIPD_RECOVER_WIDTH 3000  //初始位置检测电流恢复时间

//  ******************************  速度环  ************************** //
#define  VELOCITY_PI_KP           0.36
#define  VELOCITY_PI_KI           0.1
//   *******************************  功率环 *****************************  //
#define POWER_PI_KP               0.3155    //
#define POWER_PI_KI               0.01441   //
/*******************保护与系统恢复set********************************/
#define FAULT_RECOVER_DELAY_TIME_MS       (1000.0)                //MS：故障恢复时间

#if(HARDWARE_UDC_SAMPLE_ENABLE == 1)
#define OVER_VOLT_THRESHOLD  (30.0)    //过压、欠压保护阈值单位V
#define UNDER_VOLT_THRESHOLD (18.0)
#endif

#define OVER_CURRENT_THRESHOLD_RATIO      (1.95)                  //百分比：122%额定电流A：过流保护电流
#define BLOCK_SPEED_RATIO                 (0.1)
#define BLOCK_VOLT_RATIO	               (0.25)

#define BLOCK_TIME						32000                   //堵转时间

#define PHASSLESS_TIME					32000                   //缺相判断时间

//上电检测电机
#define MOTOR_CHECK_CUERRENT        200   //电机检测电流
#define CHECK_PULSE_WIDTH           50    //电机检测脉冲宽度
#define CHECK_RECOVER_WIDTH         10  //电机检测电流恢复时间

//估算器失速保护
#define SPEED_OC_RATIO             (0.9)
#define SENSORFAILCURRENT_RATIO    (0.008)

/*******************end set********************************/

#endif
